/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.liwalo.action;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.SessionAware;

import com.liwalo.dao.UsuarioDAO;
import com.liwalo.entities.Usuario;
import com.liwalo.utils.URLUtils;
import com.opensymphony.xwork2.ActionSupport;

/**
 *
 * @author Carlos
 */
public class Confirm extends ActionSupport implements ServletRequestAware, SessionAware{
    
    private static String CONFIRMADO = "confirmado";
    private static String NO_CONFIRMADO = "noConfirmado";
    private static String YA_CONFIRMADO = "yaConfirmado";
    private static String RESEND = "resend";
    private Usuario usuario;
    HttpServletRequest request;
    Map<String, Object> session;
    
    public String confirm() throws Exception{
        String token = request.getParameter("token");
        String email = request.getParameter("email");
        UsuarioDAO dao = new UsuarioDAO();
        
        if(token == null || email == null){
            return NO_CONFIRMADO;
        }
        
        session.put("email", email);
        usuario = dao.getUserByEmail(email);
        String tok = usuario.getConfirmacionesList().get(usuario.getConfirmacionesList().size()-1).getToken();
        
        if(usuario.getConfirmada()==1){
            return YA_CONFIRMADO;
        }else if(!tok.equals(token)){
            return NO_CONFIRMADO;
        }
        
        usuario.setConfirmada(1);
        dao.update(usuario);
        return CONFIRMADO;
    }
    
    public String resend() throws Exception{
        String email = (String) session.get("email");
        
        UsuarioDAO dao = new UsuarioDAO();
        
        String token = URLUtils.generateConfirmationToken();
    	
    	Usuario user = dao.getUserByEmail(email);
    	
    	user.getConfirmacionesList().get(user.getConfirmacionesList().size()-1).setToken(token);
    	dao.update(user);
    	
    	String conf = URLUtils.getConfirmURL(token, request)+"/liwalo/confirmConfirm.action?email="+email+"&token="+token;
        
        URLUtils.sendConfirmationEmail(user, conf);
    	
        session.remove("email");
        
        return RESEND;
    }

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	@Override
	public void setServletRequest(HttpServletRequest request) {
		// TODO Auto-generated method stub
		this.request =request;
	}

	@Override
	public void setSession(Map<String, Object> session) {
		// TODO Auto-generated method stub
		this.session=session;
	}
    
}
